#pragma once

#include <string>
#include <queue>
#include <vector>
#include <boost/ptr_container/ptr_vector.hpp>

#include "../CardControl.h"
#include "../../../../utils/gui/Control.h"
#include "../../../../domain/models/Card.h"
#include "../../../../domain/models/CardsCollection.h"

namespace Views {
	namespace Helpers {
		namespace Graphic {
			namespace Deduction {
				class DeductedCardPickDialog: public Utils::GUI::Control
				{
				protected:
					PlayerCardControl* PlayerCard;
					WeaponCardControl* WeaponCard;
					RoomCardControl* RoomCard;

					typedef boost::signal<void (Cards::Card*)> OnCardPick;
					OnCardPick cardPickEvent;

				public:
					DeductedCardPickDialog(Cards::PlayerCard*, Cards::WeaponCard*, Cards::RoomCard*);

					boost::signals::connection doOnCardPick(const OnCardPick::slot_function_type& slot);

				protected:
					void onCardClick(Cards::Card*);
					template<typename TCard, typename TControl>
					void setCard(TCard*, TControl**);
				};
			}
		}
	}
}
